查看原文
其他

Libp2p <IPFS 与 Polkadot>:双剑合璧会有时

ShawnRingLin PolkaBase 2024-02-01


暨5月20日Dr.GavinWood宣布启动Substrate接入IPFS的开发工作 - 作为2020年最为瞩目的两大公链项目,IPFS(filcoin)和Polkadot的合作已悄然开始。





全文阅读时间:20分钟

文章面向Polkadot和IPFS生态的开发者与技术爱好者






如果大家有关注过Polkadot、Substrate、IPFS的动态,可能都对libp2p这一名词比较眼熟。Libp2p是一个点对点网络协议堆栈。最初的标准版本是由协议实验室(Protocol Lab)开发,并基于libp2p打造出IPFS星际文件系统,同时多个开发团队基于开源的libp2p框架又开发出适合自己的X-libp2p点对点网络底层。


图:Web3技术栈 - Lay0 ,Lay1



Libp2p作为一个模块化和可拓展的网络堆栈,已由IPFS,波卡, Substrate(波卡开发公司打造的区块链开发框架)等很多开源项目所应用。Libp2p实际上是众多点对点网络协议的的统称,并由众多开发者帮助实现了Rust, Python等语言、以及面向不同对象的衍生版本


例如Gossip协议,BitTorrent,TOR,都是libp2p协议的一部分 -- 最初是由协议实验室发起,一直在维持libp2p的Go语言和JavaScript语言实现的开发和运维,波卡的开发公司Parity Technologies实现了Rust语言版的Libp2p。作为一个开源项目,Libp2p网络栈可以由任何开发者开发并不断扩张到任何应用。



波卡之中的IPFS protocol

图:IPFS协议与libp2p协议 - Polkadot技术栈


在开发的过程中,波卡自己使用了由Rust语言开发的版本跟协议实验室的“标准”libp2p版本有所不同。首先以林嘉文博士(Dr.GavinWood)带领的Polkadot项目与Parity开发团队推出了自己的区块链开发框架Substrate,Substrate框架下的libp2p网络协议是“标准libp2p协议和自研点对点网络协议的混合”。


<Substrate是波卡开发团队Parity研发的区块链搭建SDK, 具有:适配扩容互操作结构,runtime逻辑自定义,无需分叉升级,适用于所有波卡生态项目并可在未来接入波卡等优点, Gavin曾用Substrate演示15分钟搭建并发布一条公链>


在libp2p官方标准协议方面,波卡共享了IPFS的libp2p,共同的功能包括connection-checking (Ping协议),information on peers (Identity协议),以及Kademilia ramdon walking等。


图:Crate sc_network - Parity


而同时基于Libp2p,Substrate框架为此专门研发一套点对点网络协议Legacy Substrate stream用于获取区块信息(同步)的请求-响应、轻量级客户端、事务通知和区块声明等。

详情参考:

https://crates.parity.io/sc_network/index.html#the-legacy-substrate-substream 




Substrate与IPFS: 

为区块链搭建框架赋能


星际文件系统 - IPFS是一种点对点的超媒体协议,它允许将文件上传到网络,并与内容可寻址URI共享。尽管IPFS和Substrate都使用libp2p,但不能说Substrate“使用”IPFS,因为除了共享用于联网的底层库之外,更多的是基于IPFS和libp2p的技术扩展。


图:Substrate技术栈


那么Polkadot和Substrate会选择libp2p作为网络层呢?首先目前的事实是几乎所有的分布式的点对点的网络协议都存在 传统中心授信式网络的遗留问题


Libp2p的开源属性使其成为开发者可以即插即用的工具套件。首先在去分布式计算中,最重要的转变之一就是Client/Server(客户端与服务器)的概念不复存在以你的家用宽带路由器为例,所有连接到宽带的设备都会有一个私人的IP地址。当你向服务器(传统互联网服务器)请求服务时,你的宽带路由器就会将你的私人IP地址替换成一个家庭网络内的公用IP地址。



如果你自己的所有设备就是该宽带的所有连接的客户端,那就不会产生中心化服务器造成的问题但如果一个来自外界的陌生客户端会连接到你的宽带路由器并想你的设备发出“请求” -->  此时你的设备就会行使服务器的角色并向外界的请求者发出所对应的数据或命令回复 - 导致数据泄漏。这个状态就是典型的NAT穿透问题。


Libp2p就可以处理这一问题点对点网络框架下客户端同时也是服务器,每个点与点之间会相互请求和传输数据并由设定好的算法对网络行为进行通过或不通过的验证。一个网络节点之外包装的形式可以是各种硬件、或是操作系统、或者通信协议。Libp2p既支持未加密的(如TCP、UDP),也支持开箱即用的加密协议(如TLS、Noise)。


Libp2p的“中继”理念


众多使用libp2p网络底层的项目会共享libp2p带来的优势,以libp2p的“子协议Relay”为例


图:两个网络节点的Relay协议,通过Multiformats(协议实验室旗下另一个项目)的Multiaddr自描述地址对传输的地址进行解释



当众多网络节点依附于各种不一样的NAT路由和服务器平台时,节点们是不允许外部的连接接入的。如果必须要把这些节点连接起来形成一个去中心化的网络环境,Libp2p的Relay协议就把proxy设置在并生成连接于任意两个节点之间:这样所有的信息传输都会被加密并由远端的多数节点进行验证,因此使proxy本身无法成为验证中间人但仍担任传输中继的角色。


图:2020年5月20日波卡项目领导人林嘉文博士宣布启动Substrate接入IPFS的开发工作。据了解,Web3基金会在2019年已与一家头部IPFS矿机品牌初步达成波卡上线后数据存储合作意向。


在Libp2p网络底层通过IPFS从其他链上调用数据,其中IPFS数据交换协议“Content Transfer”: 此版本包括主要的Bitswap重构,运行新的和向后兼容的Bitswap协议。借助重构的Bitswap协议,一是可以实现从使用新协议的其他节点获取数据时,几乎没有重复区块;二是Bitswap协议将从从多个节点获取数据时会实现更好的并行性(parallelism)


图:IPFS – Bitswap: the data exchange protocol



生态互赢:为什么波卡和Substrate需要libp2p与IPFS


Libp2p协议自诞生以来承担着Web3.0的使命,为众多分布式网络项目赋能。而Polkadot之所以在众多解决方案中,能够成为引领跨链的生态之一,很大程度上和它的可拓展性(Scalability)分不开。其基础的Substrate区块链搭建框架在底层也应用到了IPFS。


Libp2p定位为未来去中心应用程序的标准,一种灵活的跨平台网络框架,用于点对点应用程序。可以处理Polkadot生态系统中的对等方的发现和通信。现在多个网络都采用了Libp2p技术。如EOS、以太坊2.0(进行中)、Substrate (Polkadot)、Agoric、Filecoin(IPFS激励层)


根据Substrate的技术文档:目前不可能也不打算使用libp2p网络堆栈和rust-libp2p库之外的其他更优秀的网络堆栈。可以说是目前任何分布式网络协议都会与libp2p这个网络底层产生关联。


开源的Libp2p技术为去分布式网络源源不断注入新鲜血液, “No Proxy” – 一个无需授信的世界波卡与IPFS在libp2p网络上搭建着共通的宏伟愿景Web3.0




随着波卡和IPFS-Filcoin上线愈发临近,有很多垂直生态的社群和媒体衍生而出,其中就有一家以出产优质内容为核心、搭建国内IPFS生态学术平台、凝聚价值用户、构建3.0相匹配的IPFS生态社区 IPFSBase


IPFSBase的发起团队,大部分来源于CANDAQTezas consulting团队,这是一批长耕区块链领域8年以上的资深从业布道者,其中有可追溯至2012年中国第早一批区块链技术开发团队,社区核心成员有中国最大的区块链黑客马拉松的组织者,还有多名明星项目的早期社区组建者以及海外区块链活动家。团队将以多年的行业经验和对区块链的深刻理解,融入去中心化存储生态社区的建设之中。


PolkaBase与IPFSBase将达成战略合作,一同致力于Polkadot生态和IPFS生态的技术布道价值投资分析一同传递Web3.0理念,一同助力区块链技术跨链扩容去中心化存储这两大Web3.0底层技术的价值赋能





撰文:ShawnRingLin - PolkaBase

图表:  ShawnRingLin

校对:Tezas Consulting, CANDAQ

CryptoSkyAMA, LianDu, 链读,连读

编辑:ShawnRingLin






参考文献:


https://medium.com/paritytech/why-libp2p-13085ed0c9c8


https://wiki.polkadot.network/docs/en/learn-faq


https://crates.parity.io/sc_network/index.html


https://segmentfault.com/a/1190000020344003


https://www.dropbox.com/sh/o9yt2f9iotclvgh/AAC4ykL4TTnSU9xo-QTn05jna?dl=0&preview=v2.1_Single+Chain+Flat+Visualization+(Chinese).png


https://github.com/ipfs/go-ipfs/releases



往期回顾


IPFSBase:2020风口Filecoin与IPFS,你如何参与?
Substrate: 最好的区块链搭建工具
Gavin Wood最新演讲:你将如何见证波卡主网的诞生
Gavin Wood最新演讲: 一路走来,笔比剑锋,键比笔锋




继续滑动看下一个

Libp2p <IPFS 与 Polkadot>:双剑合璧会有时

ShawnRingLin PolkaBase
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存